/*
struct TreeNode {
	int val;
	struct TreeNode *left;
	struct TreeNode *right;
	TreeNode(int x) :
			val(x), left(NULL), right(NULL) {
	}
};*/
class Solution {
public:
    //对二叉搜索树进行中序遍历，将指针放入vector中，指针所指的值在vector中都是有序的
    //将数组中的结点依次连接
    vector<TreeNode*> in;
    void inorder(TreeNode*root)
    {
        if(!root) return;
        inorder(root->left);
        in.push_back(root);
        inorder(root->right);
    }
    TreeNode* Convert(TreeNode* root) {
        if(!root) return root;
        inorder(root);
        for(int i=0;i<in.size()-1;i++)
        {
            in[i]->right=in[i+1];
            in[i+1]->left=in[i];
        }
        return in[0];
    }
};